/*
 * libCache.h
 *
 *  Created on: 03/05/2012
 *      Author: utnso
 */

#ifndef LIBCACHE_H_
#define LIBCACHE_H_
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#define CHUNKSIZE 5
#include <string.h>
#include <pthread.h>

//CONSTANTES
#define ALGORITMO_WORST_FIT 0
#define ALGORITMO_NEXT_FIT 1
#define ALGORITMO_FIFO 0
#define ALGORITMO_LRU 1

//TIPOS

typedef struct memCache_t {
	uint32_t posInicio;
	uint32_t tamanio;
	char* key;
	char estado;
	/* vienen datos para manejar fifo y lru*/
	time_t tiempo;
	struct memCache_t *sig;
} memCache_t;

typedef struct diccionario_t{
	memCache_t* listaCache;
	char* cache;
}diccionario_t;

//FUNCIONES

memCache_t *inicializarCache(uint32_t );

memCache_t *worstFit(memCache_t *, uint32_t);

void ordenarLista(memCache_t** );

char* leerCache(char*, uint32_t, uint32_t);

void escribirCache(char*, uint32_t, uint32_t, const char*);


void sincronizarCache(memCache_t *, char*);

void compactarCache(char*,memCache_t**);

void unirNodosLibres(memCache_t*, memCache_t**);


void separarNodoLibre(memCache_t *, uint32_t);


memCache_t *NextFit(memCache_t*, uint32_t);

void cargarCache(memCache_t*,uint32_t,const char*,
		diccionario_t, const char*);

#endif /* LIBCACHE_H_ */
